iT邦幫忙

2023 iThome 鐵人賽

DAY 21
0
Software Development

LeetCode-30 Days of JavaScript系列 第 21

LeetCode JS30-Day21 | 2677. Chunk Array 分塊陣列

  • 分享至 

  • xImage
  •  

LeetCode JS30-Day21 | 2677. Chunk Array 分塊陣列

Description❓

Given an array arr and a chunk size size, return a chunked array. A chunked array contains the original elements in arr, but consists of subarrays each of length size. The length of the last subarray may be less than size if arr.length is not evenly divisible by size.

You may assume the array is the output of JSON.parse. In other words, it is valid JSON.

Please solve it without using lodash's _.chunk function.

給定一個陣列arr和一個區塊大小size,傳回一個分塊陣列。
分塊陣列包含arr中的原始元素,但由每個長度為size的子陣列組成。
如果arr.length不能被size整除,則最後一個子陣列長度可能小於size

您可以假設該陣列是JSON.parse的輸出。 換句話說,它是有效的 JSON。

請在不使用 lodash 的 _.chunk 函數的情況下解決它。

Points

Solution✍️

[ ▶️挑戰這一題 ][ 本日代碼 ]

  1. 給定一個陣列arr和一個區塊大小size,傳回一個分塊陣列。
    const chunk = function(arr,size){
        let chunkedAry = [];
        //chunk分塊邏輯
        return chunkedAry;
    }
    
  2. 分塊陣列包含arr中的原始元素,但由每個長度為size的子陣列組成。
    • 如果arr.length不能被size整除,則最後一個子陣列長度可能小於size
    • 在傳寫chunk分組邏輯之前,先試想input和output結果
      let arr=[1,2,3,4,5,6,7,8];
      let size=3;
      chunkAry=[[1,2,3],[4,5,6],[7,8]];
      
    • 觀察出當索引%size===0的時候,該值會是一個分塊陣列的首項
  3. 使用for迴圈遍歷arr,根据索引值進行分組處理
    const chunk = function(arr,size){
    let chunkedAry = [];
    
    //chunk分塊邏輯
    for(let i=0;i<arr.length;i+=1){
        //在chunkAry先建置[]空陣列
        if(i%size===0){
            chunkedAry.push([]);
        }
        //push arr的原始元素 以進行分組
        //在i=0的時候透過if判斷已在chunkAry中新增空陣列[ ]
        //因此i=0會是 chunkAry[0].push(arr[0]);
        //因此i=1會是 chunkAry[0].push(arr[1]);
        //因此i=2會是 chunkAry[0].push(arr[2]);
        //因此i=3會是 chunkAry[1].push(arr[3]);
        //因此i=4會是 chunkAry[1].push(arr[4]); ..類推
        chunkedAry[chunkedAry.length - 1].push(arr[i]);
    }
    
    return chunkedAry;
    }
    

Testcase

//testcase1
let arr1 = [1,2,3,4,5];
let size1 = 1;

let chunk1 = chunk(arr1,size1);
console.log(chunk1);
//testcase2
let arr2 = [1,9,6,3,2];
let size2 = 3;

let chunk2 = chunk(arr2,size2);
console.log(chunk2);
//testcase3
let arr3 = [8,5,3,2,6];
let size3 = 6;

let chunk3 = chunk(arr3,size3);
console.log(chunk3);

上一篇
LeetCode JS30-Day20 | 2727. Is Object Empty 判斷物件是否為空
下一篇
LeetCode JS30-Day22 | 2619. Array Prototype Last 陣列原型的Last方法
系列文
LeetCode-30 Days of JavaScript30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言